package com.guang.springbootscheduleexecutortest.distributedlock;

import java.util.concurrent.TimeUnit;

/**
 * @author lg
 * @Description 分布式锁接口
 * @date 2022/11/4 17:24
 */
public interface DistributedLock {


    /**
     * 加锁
     * @param lockKey 分布式锁key
     */
    void lock(String lockKey);

    /**
     * 分布式加锁
     * @param lockKey 分布式key
     * @return true：加锁成功;false:加锁失败
     */
    boolean tryLock(String lockKey);

    /**
     * 加锁超时方法
     * @param lockKey 分布式锁key
     * @param timeOut 超时时间
     * @param timeUnit 超时时间单位
     * @return
     */
    boolean tryLock(String lockKey, long timeOut, TimeUnit timeUnit);

    /**
     * 解锁方法
     */
    void unlock();

}
